﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.ComponentModel.DataAnnotations;

namespace SetListManager.Models
{

    /// <summary>
    /// SetListPrintingModel encapsulates all the data required for our view to print a set list.
    /// Includes the set list, all the songs in the set list, along with the settings the user specified
    /// to print with.
    /// </summary>
    public class PDFOuptutModel
    {
        // Set list data
        public SetList SetList;
        // Song attributes in set list
        public IQueryable<SetListItem> SetListItems;
        // Printing attributes
        public SetListPrintingOptions PrintingOptions;
    }

    // For bringing up our SetListPrinting Options screen
    public class SetListPrintingOptions
    {
        public SetList SetList { get; set; }
        public Band Band { get; set; }
        // Song attributes in set list
        public IQueryable<SetListItem> SetListItems { get; set; }

        // Printing Options
        public bool bPrintSoloist { get; set; }
        public bool bPrintKey { get; set; }
        public bool bPrintTempo { get; set; }
        public bool bPrintNote1 { get; set; }
        public bool bPrintNote2 { get; set; }
        public bool bPrintNote3 { get; set; }
        public bool bPrintNote4 { get; set; }
        public bool bPrintNote5 { get; set; }


        // Font options
        public int iFontSizeSong { get; set; } // 1=small, 2=medium, 3=large
        public int iFontSizeColumns { get; set; }
        public int iFontSizeNotes { get; set; }
        // Dictionary of font options (e.g. 1=small, 2=medium, 3=large)
        public List<SelectListItem> lFontSizes { get; set; }

        // Misc options
        public bool bTruncateSongNames { get; set; }

    }
}